package cn.fzm.demo01;

public class Demo02ClassLoader {
    public static void main(String[] args) {

        // 获取系统类加载器
        ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();

        // 输出: sun.misc.Launcher$AppClassLoader@18b4aac2
        System.out.println(systemClassLoader);

        // 获取其上层, 扩展加载器
        ClassLoader extClassLoader = systemClassLoader.getParent();

        // 输出: sun.misc.Launcher$ExtClassLoader@1b6d3586
        System.out.println(extClassLoader);

        // 获取其上层: 获取不到引导类加载器
        ClassLoader bootstrapClassLoader = extClassLoader.getParent();
        // 输出: null
        System.out.println(bootstrapClassLoader);

        // 对于用户自定义类的加载器: 默认使用系统类加载器进行加载
        ClassLoader classLoader = Demo02ClassLoader.class.getClassLoader();
        // 输出: sun.misc.Launcher$AppClassLoader@18b4aac2
        System.out.println(classLoader);

        // 查看String类的类加载器 -> String类使用引导类加载器加载 -> Java的核心库都是使用引导类加载器加载
        ClassLoader classLoader1 = String.class.getClassLoader();
        // 输出: null
        System.out.println(classLoader1);
    }
}
